home *** CD-ROM | disk | FTP | other *** search
- property fViewList, fMainLayer, fChoreList, fMessengerList, fPrvMousePt, fPrvRollSprNum
- global kMaxSpriteChan
-
- on birth me
- mIApp(me)
- return me
- end
-
- on mIApp me
- mIViewList(me)
- mIMainLayer(me)
- mIChoreList(me)
- mIMessengerList(me)
- mResetIdleProp(me)
- end
-
- on mIViewList me
- set fViewList to [0, 0]
- repeat with aViewCount = 1 to kMaxSpriteChan
- mStView(me, aViewCount, 0)
- end repeat
- end
-
- on mIMainLayer me
- set fMainLayer to 0
- end
-
- on mIChoreList me
- set fChoreList to []
- end
-
- on mIMessengerList me
- set fMessengerList to []
- end
-
- on mResetIdleProp me
- set fPrvMousePt to point(-1, -1)
- set fPrvRollSprNum to 1
- end
-
- on mStView me, vSprNum, vView
- setAt(fViewList, vSprNum, vView)
- end
-
- on mGtView me, vSprNum
- return getAt(fViewList, vSprNum)
- end
-
- on mDispViewList me
- repeat with aViewCount = 1 to kMaxSpriteChan
- set aViewID to EMPTY
- set aPuppetState to EMPTY
- set aView to mGtView(me, aViewCount)
- if objectp(aView) then
- set aViewID to mGtID(aView)
- set aPuppetState to mIsPuppet(aView)
- end if
- put aViewCount & ":" & aView & " : " & aViewID & " : " & aPuppetState
- end repeat
- end
-
- on mDVL me
- mDispViewList(me)
- end
-
- on mNewMainLayer me, vLayerType, vGoTo
- busyCurs()
- mDisposMainLayer(me)
- go(label(vGoTo))
- set fMainLayer to NewObj(vLayerType)
- resetCurs()
- end
-
- on mDisposMainLayer me
- if objectp(fMainLayer) then
- mDeath(fMainLayer)
- set fMainLayer to 0
- end if
- end
-
- on mGtMainLayer me
- return fMainLayer
- end
-
- on mReqMorningCall me, vObj
- add(fChoreList, vObj)
- end
-
- on mCancelMorningCall me, vObj
- if count(fChoreList) > 0 then
- set aNumChore to count(fChoreList)
- repeat with aChoreNum = 1 to aNumChore
- set aChore to getAt(fChoreList, aChoreNum)
- if aChore = vObj then
- deleteAt(fChoreList, aChoreNum)
- exit repeat
- end if
- end repeat
- end if
- end
-
- on mAddMessenger me, vObj
- add(fMessengerList, vObj)
- end
-
- on mIdle me
- mPerformMessenger(me)
- mWakeObjects(me)
- mCheckRoll(me)
- end
-
- on mPerformMessenger me
- if count(fMessengerList) > 0 then
- set aNumMessenger to count(fMessengerList)
- repeat with aMessengerNum = 1 to aNumMessenger
- mSayMessage(getAt(fMessengerList, aMessengerNum))
- end repeat
- repeat with aMessengerNum = 1 to aNumMessenger
- deleteAt(fMessengerList, aMessengerNum)
- end repeat
- end if
- end
-
- on mWakeObjects me
- if count(fChoreList) > 0 then
- set aNumChore to count(fChoreList)
- repeat with aChoreNum = 1 to aNumChore
- mWakeUp(getAt(fChoreList, aChoreNum))
- end repeat
- end if
- end
-
- on mCheckRoll me
- set aNewMousePt to point(the mouseH, the mouseV)
- if fPrvMousePt = aNewMousePt then
- exit
- else
- set fPrvMousePt to aNewMousePt
- repeat with aSerchSprNum = kMaxSpriteChan down to 1
- if rollOver(aSerchSprNum) then
- set aSerchView to mGtView(me, aSerchSprNum)
- if objectp(aSerchView) then
- if aSerchSprNum = fPrvRollSprNum then
- exit repeat
- next repeat
- end if
- set aLeaveView to mGtView(me, fPrvRollSprNum)
- if objectp(aLeaveView) then
- mLeaveMouse(aLeaveView)
- end if
- mEnterMouse(aSerchView)
- set fPrvRollSprNum to aSerchSprNum
- exit repeat
- end if
- end if
- end repeat
- end if
- end
-